// progress-bar.js - 学习进度条组件逻辑
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 虽然要求不通过props传递数据，但可以保留这个接口以保持灵活性
    // 外部可以选择直接设置progress，或者通过updateProgress方法更新
    progress: {
      type: Number,
      value: 0,
      observer: function(newVal) {
        // 确保进度值在0-100之间
        if (newVal < 0) {
          this.setData({ progress: 0 });
        } else if (newVal > 100) {
          this.setData({ progress: 100 });
        }
      }
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 进度值，范围0-100
    progress: 0
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    attached: function() {
      // 组件挂载时初始化
      this.initProgress();
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 初始化进度
     */
    initProgress: function() {
      // 默认初始进度为0
      this.setData({ progress: 0 });
    },

    /**
     * 更新进度值
     * @param {Number} progress - 新的进度值（0-100）
     */
    updateProgress: function(progress) {
      // 确保进度值在有效范围内
      let validProgress = Math.max(0, Math.min(100, progress));
      this.setData({
        progress: validProgress
      });
    },

    /**
     * 根据已学习数量和总数计算并更新进度
     * @param {Number} learnedCount - 已学习的单词数量
     * @param {Number} totalCount - 单词总数
     */
    updateProgressByCount: function(learnedCount, totalCount) {
      if (totalCount === 0) return;
      
      let progress = (learnedCount / totalCount) * 100;
      this.updateProgress(progress);
    },

    /**
     * 重置进度为0
     */
    resetProgress: function() {
      this.setData({ progress: 0 });
    },

    /**
     * 获取当前进度值
     * @returns {Number} 当前进度值
     */
    getCurrentProgress: function() {
      return this.data.progress;
    }
  }
});